#ifndef __PULSETAKING_MODULE_H_
#define __PULSETAKING_MODULE_H_
#include "IModule.h"
namespace sdk
{
namespace msg
{
namespace mod
{
    class PulseTakingModule
        : public IModule
    {
    public:
        PulseTakingModule(ModulesProxy &proxy, const std::string &msgId, const WsSession &session);
        bool doDirective(std::shared_ptr<std::string> binptr, std::optional<steady_time_point> endtime, uint32_t retryIdx) override;

    private:
        bool doStartCaptureSucceeded(std::shared_ptr<std::string> binptr);
        bool doStartCaptureFailed(std::shared_ptr<std::string> binptr);
        bool doReportPulseException(std::shared_ptr<std::string> binptr);
        bool doReportInitialPressure(std::shared_ptr<std::string> binptr);
        bool doReporWristPumpStatus(std::shared_ptr<std::string> binptr);
        bool doReporPulsePumpStatus(std::shared_ptr<std::string> binptr);
        bool doReportCaptureState(std::shared_ptr<std::string> binptr);
        bool doReportSetThresholdsSucceeded(std::shared_ptr<std::string> binptr);
        bool doReportPulseResult(std::shared_ptr<std::string> binptr, std::optional<steady_time_point> endtime, uint32_t retryIndex);
        bool doReportEmergencyStopped(std::shared_ptr<std::string> binptr);
        bool pushUserOutData(std::string &json);
    };
} // namespace mod
} // namespace msg
} // namespace sdk
#endif // !__PULSETAKING_MODULE_H_